package com.sojson.util.file.enums;

import static com.sojson.util.file.interfaces.FileTableInterface.field;
import static com.sojson.util.file.interfaces.FileTableInterface.fields;

import java.util.Arrays;
import java.util.List;

import com.sojson.entity.bo.FileField;
import com.sojson.entity.bo.FileTable;
import com.sojson.util.file.constant.ConstantFileFieldName;
import com.sojson.util.file.interfaces.FileTableInterface;

/**
 * 有文件的表的基础枚举类
 * 
 * @author liu
 * @date 2020-10-01
 */
public enum EFileTableBase implements FileTableInterface {

    /** 配置表 */
    CONFIG(5, "rent_config", fields(field(ConstantFileFieldName.VAL, 1))),
    /***/
    ;

    /** 类型代码 */
    private int code;
    /** 表名 */
    private String tableName;
    /** 订单关联关系表名集合 */
    private List<FileTable> tableNameOrders;
    /** 字段列表 */
    private List<FileField> fields;

    private EFileTableBase(int code, String name, List<FileField> fields) {
        this.code = code;
        this.tableName = name;
        this.fields = fields;
    }

    private EFileTableBase(int code, String name, List<FileField> fields, FileTable... tableNameOrders) {
        this.code = code;
        this.tableName = name;
        this.fields = fields;
        this.tableNameOrders = Arrays.asList(tableNameOrders);
    }

    /**
     * 获取类型代码
     * 
     * @return
     */
    @Override
    public int getCode() {
        return code;
    }

    /**
     * 设置类型代码
     * 
     * @param code
     */
    @Override
    public void setCode(int code) {
        this.code = code;
    }

    /**
     * 获取表名
     * 
     * @return
     */
    @Override
    public String getTableName() {
        return tableName;
    }

    /**
     * 设置表名
     * 
     * @param tableName
     */
    @Override
    public void setTableName(String tableName) {
        this.tableName = tableName;
    }

    /**
     * 获取订单关联关系表名集合
     * 
     * @return
     */
    @Override
    public List<FileTable> getTableNameOrders() {
        return tableNameOrders;
    }

    /**
     * 设置订单关联关系表名集合
     * 
     * @param tableNameOrders
     */
    @Override
    public void setTableNameOrders(List<FileTable> tableNameOrders) {
        this.tableNameOrders = tableNameOrders;
    }

    /**
     * 获取字段列表
     * 
     * @return
     */
    @Override
    public List<FileField> getFields() {
        return fields;
    }

    /**
     * 设置字段列表
     * 
     * @param fileds
     */
    @Override
    public void setFields(List<FileField> fields) {
        this.fields = fields;
    }

}